/**
 * 全局错误类型常量定义
 *
 * 1. 错误码编码规则（5位字符串，格式：A BB CC）
 *    - A（第1位）：错误来源 → 1=前台错误（如参数格式、用户操作），2=后台错误（如数据库、服务调用）
 *    - BB（第2-3位）：模块编号 → 00=通用模块，01=用户模块，02=授权模块，03=商品模块，04=购物车模块，05=地址模块（新增模块按顺序递增）
 *    - CC（第4-5位）：模块内错误序号 → 00预留为模块通用错误，其余从01开始连续递增
 *
 * 2. 错误对象字段说明
 *    - code：错误码（严格遵循上述编码规则）
 *    - message：用户友好提示（用于前端展示，需简洁易懂）
 *    - result：错误详情（可选，如参数校验失败的字段、异常堆栈等，仅在调试/日志时使用）
 *
 * 3. 错误语义约定
 *    - Fail：业务逻辑层面的“失败”（如“用户不存在”“添加购物车失败”，已知可预期的业务场景）
 *    - Error：系统层面的“错误”（如“注册出错”“修改商品出错”，非预期的异常场景，如数据库报错）
 */

// 出错类型常量
const errorType = {
  // ========================= 通用模块（1 00 CC）=========================
  // 所有模块通用的错误（如参数格式、数据校验）
  dataFormatError: {
    code: "10001",
    message: "数据格式错误",
    result: "",
  },

  // ========================= 用户模块（1 01 CC）=========================
  // 用户相关操作的错误（注册、登录、密码修改等）
  userFormatError: {
    code: "10101", // 错误提示码。第一位：前台错误1，后台错误2；第二和第三位：报错的具体模块（用户模块|商品模块|授权模块...）；第四和第五位：错误的详细编号。
    message: "用户名或密码为空", // 错误信息。
    result: "",
  },
  userAlreadyExists: {
    code: "10102",
    message: "用户已经存在",
    result: "",
  },
  userRegisterError: {
    code: "10103",
    message: "用户注册错误",
    result: "",
  },
  userDoesNotExists: {
    code: "10104",
    message: "用户不存在",
    result: "",
  },
  userLoginError: {
    code: "10105",
    message: "用户登录失败",
    result: "",
  },
  invalidPassword: {
    code: "10106",
    message: "密码不匹配",
    result: "",
  },
  modifyPasswordFail: {
    code: "10107",
    message: "修改密码失败",
    result: "",
  },
  modifyPasswordError: {
    code: "10108",
    message: "修改密码出错",
    result: "",
  },

  // ========================= 授权模块（1 02 CC）=========================
  // 权限、Token相关的错误
  tokenExpiredError: {
    code: "10201",
    message: "token已过期",
    result: "",
  },
  invalidToken: {
    code: "10202",
    message: "无效的token",
    result: "",
  },
  hasNotAdminPermission: {
    code: "10203",
    message: "没有管理员权限",
    result: "",
  },

  // ========================= 商品模块（1 03 CC）=========================
  // 商品CRUD、上传相关的错误
  fileUploadError: {
    code: "10301",
    message: "商品图片上传失败",
    result: "",
  },
  unSupportedFileType: {
    code: "10302",
    message: "不支持的图片格式",
    result: "",
  },
  goodsFormatError: {
    code: "10303",
    message: "商品参数格式错误",
    result: "",
  },
  publishGoodsError: {
    code: "10304",
    message: "发布商品失败",
    result: "",
  },
  invalidGoodsId: {
    code: "10305",
    message: "无效的商品id",
    result: "",
  },
  updateGoodsError: {
    code: "10306",
    message: "修改商品出错",
    result: "",
  },
  removeGoodsError: {
    code: "10307",
    message: "下架商品出错",
    result: "",
  },
  restoreGoodsError: {
    code: "10308",
    message: "上架商品出错",
    result: "",
  },
  findGoodsError: {
    code: "10309",
    message: "获取商品列表失败",
    result: "",
  },

  // ========================= 购物车模块（1 04 CC）=========================
  // 购物车项CRUD、批量操作相关的错误
  addCartFail: {
    code: "10401",
    message: "添加到购物车失败",
    result: "",
  },
  addCartError: {
    code: "10402",
    message: "添加到购物车出错",
    result: "",
  },
  findCartsFail: {
    code: "10403",
    message: "获取购物车列表失败",
    result: "",
  },
  findCartsError: {
    code: "10404",
    message: "获取购物车列表出错",
    result: "",
  },
  cartFormatError: {
    code: "10405",
    message: "购物车数据格式错误",
    result: "",
  },
  invalidCartId: {
    code: "10406",
    message: "无效的购物车项id",
    result: "",
  },
  updateCartFail: {
    code: "10407",
    message: "修改购物车项失败",
    result: "",
  },
  updateCartError: {
    code: "10408",
    message: "修改购物车项出错",
    result: "",
  },
  deleteCartsFail: {
    code: "10409",
    message: "删除购物车项失败",
    result: "",
  },
  deleteCartsError: {
    code: "10410",
    message: "删除购物车项出错",
    result: "",
  },
  batchSelectedCartsFail: {
    code: "10411",
    message: "批量更新购物车的选中状态失败",
    result: "",
  },
  batchSelectedCartsError: {
    code: "10412",
    message: "批量更新购物车的选中状态出错",
    result: "",
  },
  queryTotalCartsFail: {
    code: "10413",
    message: "查询购物车总数失败",
    result: "",
  },
  queryTotalCartsError: {
    code: "10414",
    message: "查询购物车总数出错",
    result: "",
  },

  // ========================= 地址模块（1 05 CC）=========================
  // 地址CRUD相关的错误
  addrFormatError: {
    code: "10501",
    message: "地址数据格式错误",
    result: "",
  },
  addAddressFail: {
    code: "10502",
    message: "创建地址失败",
    result: "",
  },
  addAddressError: {
    code: "10503",
    message: "创建地址出错",
    result: "",
  },
  findAllAddressFail: {
    code: "10504",
    message: "获取地址失败",
    result: "",
  },
  findAllAddressError: {
    code: "10505",
    message: "获取地址出错",
    result: "",
  },
  updateAddressFail: {
    code: "10506",
    message: "更新地址失败",
    result: "",
  },
  updateAddressError: {
    code: "10507",
    message: "更新地址出错",
    result: "",
  },
  removeAddressFail: {
    code: "10508",
    message: "删除地址失败",
    result: "",
  },
  removeAddressError: {
    code: "10509",
    message: "删除地址出错",
    result: "",
  },
  setDefaultAddressFail: {
    code: "10510",
    message: "设置默认地址失败",
    result: "",
  },
  setDefaultAddressError: {
    code: "10511",
    message: "设置默认地址出错",
    result: "",
  },
  invalidAddressId: {
    code: "10512",
    message: "无效的地址id",
    result: "",
  },

  // ========================= 订单模块（1 06 CC）=========================
  // 订单CRUD相关的错误
  orderFormatError: {
    code: "10601",
    message: "订单数据格式错误",
    result: "",
  },
  createOrderFail: {
    code: "10602",
    message: "创建订单失败",
    result: "",
  },
  createOrderError: {
    code: "10603",
    message: "创建订单出错",
    result: "",
  },
  findAllOrderFail: {
    code: "10604",
    message: "获取订单列表失败",
    result: "",
  },
  findAllOrderError: {
    code: "10605",
    message: "获取订单列表出错",
    result: "",
  },
  updateOrderFail: {
    code: "10606",
    message: "更新订单状态失败",
    result: "",
  },
  updateOrderError: {
    code: "10607",
    message: "更新订单状态出错",
    result: "",
  },
};

module.exports = errorType;
